#pragma once

#include "CoreMinimal.h"
#include "CombatDefinition.generated.h"

UENUM()
enum class EWeaponType
{
	EWT_Unarmed UMETA(DisplayName = "Unarmed"), 
	EWT_Sword   UMETA(DisplayName = "Sword"), 
};

UENUM()
enum class ECombatActionType
{
	ECAT_Light UMETA(DisplayName = "Light"),
	ECAT_Heavy UMETA(DisplayName = "Heave"),
	ECAT_Skill UMETA(DisplayName = "Skill"),
};

USTRUCT(BlueprintType)
struct FCombatAction: public FTableRowBase
{
	GENERATED_USTRUCT_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UAnimMontage* MontageInstance = nullptr;
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	int32 AttackPhase = 0;
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	float CoolDown = 0.f;
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	bool bCanWindDown = true;
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	ECombatActionType CombatActionType;
};

USTRUCT(BlueprintType)
struct FCombatCombo
{
	GENERATED_USTRUCT_BODY()
	
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TArray<FCombatAction> ComboCombatActions;
};

USTRUCT(BlueprintType)
struct FCombatScheme: public FTableRowBase
{
	GENERATED_USTRUCT_BODY()

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	EWeaponType WeaponType;
	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	UDataTable* FCombatActionTable;
};
